Open
Conversation
The main loop assumes that the engine is busy, however the handling of the emError state sets engineBusy to false. This causes an assertion, that was added in c750929 via #26, to trigger, which leads in debug runs (-ea flag set) to a crashed Engine and a blocked TestEngineDriver. Additionaly the engineBusy flag is set to false even when the Engine is actually busy as the emError state is left to either emIdle or emTerminating. This commit 1) changes the assertion to not throw when in emError state and 2) corrects the setting of engineBusy to be false only when no ecTerminate / ecRecover command was handled. TODO: This basic fix leaves the Engine in a Thread.yield loop until a ecTerminate / ecRecover command is present. The polling of the commandQueue should be replaced with a blocking wait.
.. with blocking wait for the next command. Also restore the assertion that was changed in the previous commit as workaround.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR fixes an assertion caused in emError handling that broke tests in the operator-dev branch.
It also fixes a wrongfully set
engineBusy = falseon termination/recover and replaces a Thread.yield loop with a blocking wait.See the commit messages for more info.